home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / samples / Multimedia / Direct3D / DXTex / dds.h < prev    next >
C/C++ Source or Header  |  2001-10-08  |  4KB  |  101 lines

  1. // dds.h
  2. //
  3. // This header defines constants and structures that are useful when parsing 
  4. // DDS files.  DDS files were originally designed to use several structures
  5. // and constants that are native to DirectDraw and are defined in ddraw.h,
  6. // such as DDSURFACEDESC2 and DDSCAPS2.  This file defines similar 
  7. // (compatible) constants and structures so that one can use DDS files 
  8. // without needing to include ddraw.h.
  9.  
  10. #ifndef _DDS_H_
  11. #define _DDS_H_
  12.  
  13. struct DDS_PIXELFORMAT
  14. {
  15.     DWORD dwSize;
  16.     DWORD dwFlags;
  17.     DWORD dwFourCC;
  18.     DWORD dwRGBBitCount;
  19.     DWORD dwRBitMask;
  20.     DWORD dwGBitMask;
  21.     DWORD dwBBitMask;
  22.     DWORD dwABitMask;
  23. };
  24.  
  25. #define DDS_FOURCC 0x00000004  // DDPF_FOURCC
  26. #define DDS_RGB    0x00000040  // DDPF_RGB
  27. #define DDS_RGBA   0x00000041  // DDPF_RGB | DDPF_ALPHAPIXELS
  28.  
  29. const DDS_PIXELFORMAT DDSPF_DXT1 =
  30.     { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','1'), 0, 0, 0, 0, 0 };
  31.  
  32. const DDS_PIXELFORMAT DDSPF_DXT2 =
  33.     { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','2'), 0, 0, 0, 0, 0 };
  34.  
  35. const DDS_PIXELFORMAT DDSPF_DXT3 =
  36.     { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','3'), 0, 0, 0, 0, 0 };
  37.  
  38. const DDS_PIXELFORMAT DDSPF_DXT4 =
  39.     { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','4'), 0, 0, 0, 0, 0 };
  40.  
  41. const DDS_PIXELFORMAT DDSPF_DXT5 =
  42.     { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','5'), 0, 0, 0, 0, 0 };
  43.  
  44. const DDS_PIXELFORMAT DDSPF_A8R8G8B8 =
  45.     { sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 };
  46.  
  47. const DDS_PIXELFORMAT DDSPF_A1R5G5B5 =
  48.     { sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x00007c00, 0x000003e0, 0x0000001f, 0x00008000 };
  49.  
  50. const DDS_PIXELFORMAT DDSPF_A4R4G4B4 =
  51.     { sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x0000f000, 0x000000f0, 0x0000000f, 0x0000f000 };
  52.  
  53. const DDS_PIXELFORMAT DDSPF_R8G8B8 =
  54.     { sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 24, 0x00ff0000, 0x0000ff00, 0x000000ff, 0x00000000 };
  55.  
  56. const DDS_PIXELFORMAT DDSPF_R5G6B5 =
  57.     { sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 16, 0x0000f800, 0x000007e0, 0x0000001f, 0x00000000 };
  58.  
  59. #define DDS_HEADER_FLAGS_TEXTURE    0x00001007  // DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT 
  60. #define DDS_HEADER_FLAGS_MIPMAP     0x00020000  // DDSD_MIPMAPCOUNT
  61. #define DDS_HEADER_FLAGS_VOLUME     0x00800000  // DDSD_DEPTH
  62. #define DDS_HEADER_FLAGS_PITCH      0x00000008  // DDSD_PITCH
  63. #define DDS_HEADER_FLAGS_LINEARSIZE 0x00080000  // DDSD_LINEARSIZE
  64.  
  65. #define DDS_SURFACE_FLAGS_TEXTURE 0x00001000 // DDSCAPS_TEXTURE
  66. #define DDS_SURFACE_FLAGS_MIPMAP  0x00400008 // DDSCAPS_COMPLEX | DDSCAPS_MIPMAP
  67. #define DDS_SURFACE_FLAGS_CUBEMAP 0x00000008 // DDSCAPS_COMPLEX
  68.  
  69. #define DDS_CUBEMAP_POSITIVEX 0x00000600 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX
  70. #define DDS_CUBEMAP_NEGATIVEX 0x00000a00 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX
  71. #define DDS_CUBEMAP_POSITIVEY 0x00001200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY
  72. #define DDS_CUBEMAP_NEGATIVEY 0x00002200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY
  73. #define DDS_CUBEMAP_POSITIVEZ 0x00004200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ
  74. #define DDS_CUBEMAP_NEGATIVEZ 0x00008200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ
  75.  
  76. #define DDS_CUBEMAP_ALLFACES ( DDS_CUBEMAP_POSITIVEX | DDS_CUBEMAP_NEGATIVEX |\
  77.                                DDS_CUBEMAP_POSITIVEY | DDS_CUBEMAP_NEGATIVEY |\
  78.                                DDS_CUBEMAP_POSITIVEZ | DDS_CUBEMAP_NEGATIVEZ )
  79.  
  80. #define DDS_FLAGS_VOLUME 0x00200000 // DDSCAPS2_VOLUME
  81.  
  82.  
  83. struct DDS_HEADER
  84. {
  85.     DWORD dwSize;
  86.     DWORD dwHeaderFlags;
  87.     DWORD dwHeight;
  88.     DWORD dwWidth;
  89.     DWORD dwPitchOrLinearSize;
  90.     DWORD dwDepth; // only if DDS_HEADER_FLAGS_VOLUME is set in dwHeaderFlags
  91.     DWORD dwMipMapCount;
  92.     DWORD dwReserved1[11];
  93.     DDS_PIXELFORMAT ddspf;
  94.     DWORD dwSurfaceFlags;
  95.     DWORD dwCubemapFlags;
  96.     DWORD dwReserved2[3];
  97. };
  98.  
  99.  
  100. #endif
  101.